<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<!-- Named templates -->
<xsl:template name="form">

<form method="{@method}">
<xsl:if test="@action"><xsl:attribute name="action" select="@action"/></xsl:if>

<table>
<tr><td colspan='3'><xsl:value-of select="title/text()"/></td></tr>
<tr><td colspan='3'><xsl:call-template name="messages"/></td></tr>
<xsl:for-each select="*[name() != 'submit' and name() != 'messages' and name() != 'title']">
<tr>
	<td><xsl:call-template name="get_label"/>
	<xsl:if test="@required = '1'">*</xsl:if></td>
	<td><xsl:apply-templates select="." mode="form_fields"/></td>
	<td><xsl:call-template name="check_field"/></td>
</tr>
</xsl:for-each>
<tr><td colspan='2'><xsl:apply-templates select="submit" mode="form_fields"/></td></tr>
</table>
<xsl:value-of select="*[@required]"/>
<xsl:if test="*[@required]">
<span style="font-size: 70%">* - <xsl:call-template name="get_label"><xsl:with-param name="name" select="'req'"/></xsl:call-template></span>
</xsl:if>
</form>
</xsl:template>

<xsl:template name="get_label">
<xsl:param name="name" select="@name"/>
<xsl:call-template name="gettext">
<xsl:with-param name="id" select="$name"/><xsl:with-param name="file" select="'forms.xml'"/>
</xsl:call-template>
</xsl:template>

<xsl:template name="check_field">
<xsl:variable name="name" select="@name"/>
<xsl:choose>
<xsl:when test="../check/@*[name() = $name and . = '1']"><xsl:call-template name="get_label"><xsl:with-param name="name" select="'bad'"/></xsl:call-template></xsl:when>
<xsl:when test="../check/@*[name() = $name and . = '2']"><xsl:call-template name="get_label"><xsl:with-param name="name" select="'req'"/></xsl:call-template></xsl:when>
</xsl:choose>
</xsl:template>

<!-- Form field matches -->
<xsl:template match="*" mode="form_fields"/>

<xsl:template name="messages">
<xsl:for-each select="messages/message">
<xsl:choose>
<xsl:when test="@critical">
<span style="color: red"><xsl:call-template name="form_message"/></span>
</xsl:when>
<xsl:otherwise><xsl:call-template name="form_message"/></xsl:otherwise>
</xsl:choose>
<br/>
</xsl:for-each>
</xsl:template>

<xsl:template name="form_message">
<xsl:value-of select="text()"/>
</xsl:template>

<xsl:template match="input" mode="form_fields">
<xsl:element name="input">
<xsl:attribute name="type"><xsl:value-of select="@type"/></xsl:attribute>
<xsl:attribute name="value"><xsl:value-of select="@value"/></xsl:attribute>
<xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
<xsl:if test="@size"><xsl:attribute name="size"><xsl:value-of select="@size"/></xsl:attribute></xsl:if>
<xsl:if test="@alt"><xsl:attribute name="alt"><xsl:value-of select="@alt"/></xsl:attribute></xsl:if>
</xsl:element><xsl:value-of select="@label"/>
</xsl:template>

<xsl:template match="textarea" mode="form_fields">
<textarea name="{@name}" value="{@value}" cols="{@cols}" rows="{@rows}"/><xsl:value-of select="@label"/>
</xsl:template>

<xsl:template match="submit" mode="form_fields">
<!--<xsl:variable name="v"><xsl:call-template name="get_label"><xsl:with-param name="name" select="@value"/></xsl:call-template></xsl:variable>-->
<input type="submit" name="{@name}" value="{@value}"/>
</xsl:template>

<xsl:template match="xsl_select" mode="form_fields">
<xsl:variable name="group" select="@group"/>

<select name="{@name}">
<xsl:for-each select="document(concat($lang, 'forms.xml'))/strings/group[@id = $group]/string">
<option value="{@id}"><xsl:value-of select="text()"/></option>
</xsl:for-each>
</select>
</xsl:template>

</xsl:stylesheet>
